#include <iostream>
#include "Tag.h"

using namespace std;

void inspect(Tag* tag, int tabs){
	IteradorLista<Entrada>* itAtributos;
	IteradorLista<Tag>* itTags;
	Entrada* entrada;
	int aux;

	//obtengo un iterador para recorrer los hijos del tag
	itTags = new IteradorLista<Tag>(tag->getHijos());

	for(int i=0; i<tabs; i++)
		cout << "\t";

	cout << tag->getTipo() << ": (" << tag->getLinea() << ")" << endl;
	itAtributos = new IteradorLista<Entrada>(tag->getAtributos()->getEntradas());

	while(itAtributos->tieneSiguiente()){
		entrada = itAtributos->siguiente();
		for(int i=0; i<tabs; i++)
		cout << "\t";

		cout << entrada->getClave() << ": " << entrada->getValor() << endl;
	}

	for(int i=0; i<tabs; i++)
		cout << "\t";

	cout << "{" << endl;

	while(itTags->tieneSiguiente())
		inspect(itTags->siguiente(), tabs + 1);

	for(int i=0; i<tabs; i++)
		cout << "\t";

	cout << "}" << endl;
}

int maino(){
	int aux;

	//creo tags
	Tag* tag = new Tag("escenario", 10);
	tag->setAtributo("ancho", "640");
	tag->setAtributo("alto", "480");

	Tag* tag2 = new Tag("Grilla", 15);
	tag2->setAtributo("att1", "valor1");
	tag2->setAtributo("att2", "valor2");
	tag2->setAtributo("att3", "valor3");

	tag2->addHijo(new Tag("subgrilla1", 18));
	tag2->addHijo(new Tag("subgrilla2", 20));
	tag2->addHijo(new Tag("subgrilla3", 25));
	tag->addHijo(tag2);

	//recorro recursivamente y muestro
	inspect(tag, 0);

	//destruyo el tag raiz (como la lista destruyo los nodos no hace falta destruir el resto)
	delete tag;

	cin >> aux;
	return 0;
}